package com.example.sqliteapplication;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.example.sqliteapplication.bean.StudentInfo;
import com.example.sqliteapplication.utils.MyDBHelper;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private EditText etName;
    private EditText etNumber;
    private SQLiteDatabase db;
    public static final String TAG="MainActivity";
    private TextView tvInfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyDBHelper helper=new MyDBHelper(this);
        //helper.getReadableDatabase()和helper.getWritableDatabase()都会获取一个db，
        // 在内存不足helper.getWritableDatabase(）可能不会执行
        db = helper.getWritableDatabase();
        etName = (EditText) findViewById(R.id.et_name);
        etNumber = (EditText) findViewById(R.id.et_number);
        tvInfo = (TextView) findViewById(R.id.tv_info);

        Button btninsert= (Button) findViewById(R.id.btn_insert);
        Button btnUpdate= (Button) findViewById(R.id.btn_update);
        Button btnDelete= (Button) findViewById(R.id.btn_delete);
        Button btnAll= (Button) findViewById(R.id.btn_search);
        btnUpdate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //更新记录
                /*


                //将name=kate的记录更新id为202
                db.execSQL("update info set id=? where name=?",new Object[]{"202","kate"});
                 */
                //update
                //将name=kate，更新id=502
                ContentValues values=new ContentValues();
                values.put("id","502");//参数1-表的字段名，字段的值
                db.update("info",values,"name=?",new String[]{"kate"});
            }
        });
        btnDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //删除一条数据
                /*方法1-用sql语句删除

                //删除name=tom的记录
                db.execSQL("delete from info where name=?",new Object[]{"to'm"});
                */
                //方法用封装好的方法delete.
                // 参数1--表名，
                // 参数2-条件表达式，
                // 参数3-？的值
                //删除name=john的记录
                db.delete("info","name=?",new String[]{"john"});

            }
        });
        btnAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //查找到info表的所有记录
                //ArrayList保存查到的结果
                ArrayList<StudentInfo> resultList=new ArrayList<StudentInfo>();
                /*


                Cursor cursor=db.rawQuery("select * from info",null); */
                //参数1-表名，
                // 参数2-查询结果中保留的列，null=全部保留
                // 参数3-查询条件，
                // 参数4-条件中？的值，
                // 参数567 null
                //Cursor cursor=db.query("info",new String[]{"id","name"},"name=?",new String[]{"kate"},null,null,null);
                Cursor cursor=db.query("info",null,null,null,null,null,null);
                //cursor非空，有数据
                if (cursor!=null&&cursor.getCount()>0){
                    while (cursor.moveToNext()){
                        //cursor.getString(0),获取第0列的数据
                        StudentInfo student=new StudentInfo(cursor.getString(0),cursor.getString(1));
                        resultList.add(student);
                    }
                }
                //查询结果显示到文本框
                tvInfo.setText("");
                for (StudentInfo s:resultList){
                    tvInfo.append( s.getName()+"----/------"+s.getId());
                    tvInfo.append("\n");

//                        Log.i(TAG, "id="+s.getId());
//                        Log.i(TAG, "name="+s.getName());
//                        Log.i(TAG, "------------");

                }



            }
        });

        btninsert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //点击按钮，向info表添加一条记录
                String name=etName.getText().toString();
                String number=etNumber.getText().toString();
                /*方法1-执行一条sql语句


                //添加
                db.execSQL("insert into info(id,name) values(?,?)",new Object[]{number,name});

                */
                //方法2-用封装好的insert方法
                //参数1-表名，
                // 参数2-空行的值，null，
                // 参数3-values值
                ContentValues values=new ContentValues();
                values.put("id",number);//第一个参数是表中的字段名，第二个参数是字段的值
                values.put("name", name);
                db.insert("info",null,values);
                etNumber.setText("");
                etName.setText("");

            }
        });



    }
}
